{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.206651Z",
     "start_time": "2018-09-06T08:57:33.198630Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import matplotlib as mpl \n",
    "%matplotlib inline\n",
    "import pickle\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "# 设置中文编码和负号的正常显示\n",
    "plt.rcParams['font.sans-serif'] = 'simhei'\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "Path = 'D:\\\\APViaML'\n",
    "pd.set_option('display.max_columns', 50)\n",
    "pd.set_option('display.max_rows', 100)\n",
    "pd.set_option('display.float_format', lambda x: '%.3f' % x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.235728Z",
     "start_time": "2018-09-06T08:57:33.208658Z"
    }
   },
   "outputs": [],
   "source": [
    "X_factor_macrolist = pd.read_excel(Path + '\\\\data\\\\List.xlsx',sheet_name='Macro')\n",
    "X_factor_macrolist = X_factor_macrolist.loc[:,['Acronym','order']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.241744Z",
     "start_time": "2018-09-06T08:57:33.237736Z"
    }
   },
   "outputs": [],
   "source": [
    "def get_macrochar_importance_data(model_name):\n",
    "    file = open(Path + '\\\\output\\\\data\\\\'+ model_name+'macro_char_importance.pkl', 'rb')\n",
    "    raw_data = pickle.load(file)\n",
    "    file.close()\n",
    "    return raw_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.252773Z",
     "start_time": "2018-09-06T08:57:33.244752Z"
    }
   },
   "outputs": [],
   "source": [
    "model_list1 = ['ENet','RF','GBRT','NN1','NN2','NN3']\n",
    "for x in model_list1:\n",
    "    model_name = str(x)\n",
    "    locals()[x] = get_macrochar_importance_data(model_name)\n",
    "    locals()[x] = np.array(locals()[x][1:])* -1\n",
    "    locals()[x] = locals()[x].reshape(-1,1)\n",
    "    scaler = MinMaxScaler()\n",
    "    locals()[x] = scaler.fit_transform(locals()[x])\n",
    "    locals()[x] = locals()[x]/np.sum(locals()[x])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.259796Z",
     "start_time": "2018-09-06T08:57:33.255283Z"
    }
   },
   "outputs": [],
   "source": [
    "X_factor_macrolist.set_index('Acronym', inplace=True, drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.270829Z",
     "start_time": "2018-09-06T08:57:33.263807Z"
    }
   },
   "outputs": [],
   "source": [
    "for x in model_list1:\n",
    "    model_name = str(x)\n",
    "    X_factor_macrolist[model_name] = locals()[x]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.278851Z",
     "start_time": "2018-09-06T08:57:33.273837Z"
    }
   },
   "outputs": [],
   "source": [
    "X_factor_macrolist.sort_values('order',inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.285869Z",
     "start_time": "2018-09-06T08:57:33.281859Z"
    }
   },
   "outputs": [],
   "source": [
    "del X_factor_macrolist['order']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T08:57:33.305924Z",
     "start_time": "2018-09-06T08:57:33.291885Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ENet</th>\n",
       "      <th>RF</th>\n",
       "      <th>GBRT</th>\n",
       "      <th>NN1</th>\n",
       "      <th>NN2</th>\n",
       "      <th>NN3</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Acronym</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>dp</th>\n",
       "      <td>0.112</td>\n",
       "      <td>0.146</td>\n",
       "      <td>0.184</td>\n",
       "      <td>0.179</td>\n",
       "      <td>0.126</td>\n",
       "      <td>0.122</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ep_macro</th>\n",
       "      <td>0.167</td>\n",
       "      <td>0.163</td>\n",
       "      <td>0.139</td>\n",
       "      <td>0.157</td>\n",
       "      <td>0.081</td>\n",
       "      <td>0.278</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>bm</th>\n",
       "      <td>0.043</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.056</td>\n",
       "      <td>0.160</td>\n",
       "      <td>0.076</td>\n",
       "      <td>0.334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ntis</th>\n",
       "      <td>0.000</td>\n",
       "      <td>0.022</td>\n",
       "      <td>0.157</td>\n",
       "      <td>0.040</td>\n",
       "      <td>0.207</td>\n",
       "      <td>0.033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tbl</th>\n",
       "      <td>0.455</td>\n",
       "      <td>0.318</td>\n",
       "      <td>0.222</td>\n",
       "      <td>0.074</td>\n",
       "      <td>0.128</td>\n",
       "      <td>0.121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tms</th>\n",
       "      <td>0.215</td>\n",
       "      <td>0.335</td>\n",
       "      <td>0.125</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.211</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dfy</th>\n",
       "      <td>0.001</td>\n",
       "      <td>0.016</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.296</td>\n",
       "      <td>0.172</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>svar</th>\n",
       "      <td>0.007</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.118</td>\n",
       "      <td>0.093</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.112</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          ENet    RF  GBRT   NN1   NN2   NN3\n",
       "Acronym                                     \n",
       "dp       0.112 0.146 0.184 0.179 0.126 0.122\n",
       "ep_macro 0.167 0.163 0.139 0.157 0.081 0.278\n",
       "bm       0.043 0.000 0.056 0.160 0.076 0.334\n",
       "ntis     0.000 0.022 0.157 0.040 0.207 0.033\n",
       "tbl      0.455 0.318 0.222 0.074 0.128 0.121\n",
       "tms      0.215 0.335 0.125 0.000 0.211 0.000\n",
       "dfy      0.001 0.016 0.000 0.296 0.172 0.000\n",
       "svar     0.007 0.001 0.118 0.093 0.000 0.112"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_factor_macrolist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-06T09:09:08.350469Z",
     "start_time": "2018-09-06T09:09:07.734789Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "\n",
    "model_list =  ['ENet','RF','GBRT','NN1','NN2','NN3']\n",
    "\n",
    "colors_list = sns.cubehelix_palette(len(model_list))\n",
    "labels = list(X_factor_macrolist.index.values)\n",
    "f , ax=plt.subplots(figsize=(16,8))\n",
    "plt.rcParams['font.sans-serif'] = 'simhei'\n",
    " ## 定义一下画图的风格\n",
    "plt.style.use('seaborn-pastel')\n",
    " # 构建数据\n",
    "bar_width1 = 0.10\n",
    "bar_width2 = 0.25\n",
    "for i,x in enumerate(model_list):\n",
    "    model_name = str(x)\n",
    "    locals()[x] = np.array(X_factor_macrolist[model_name])\n",
    "    plt.bar(np.arange(len(labels))+i*bar_width1, locals()[x], \n",
    "            label = model_name, alpha = 0.8, width = bar_width1,\n",
    "            color=colors_list[i])\n",
    "\n",
    "plt.xticks(np.arange(len(labels))+bar_width2,labels)\n",
    "plt.xticks(fontsize=15)\n",
    "plt.grid(True,ls='--')\n",
    "plt.legend(fontsize=15)\n",
    "ax = plt.gca()\n",
    "ax.spines['top'].set_visible(False) #去掉上边框\n",
    "ax.spines['right'].set_visible(False) #去掉右边框\n",
    "plt.savefig(Path + '\\\\output\\\\figure\\\\Table4.jpg',bbox_inches = 'tight')\n",
    " # 显示图形\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "position": {
    "height": "304.4px",
    "left": "1166px",
    "right": "20px",
    "top": "120px",
    "width": "350px"
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
